範囲選択の応用


選択領域内での範囲選択
処理内容:選択範囲内(A1が左上端セル)の2列目(B列)を選択します。
Sub Selected_Select1()
Worksheets("Sheet1").Select
Range("A1").CurrentRegion.Columns(2).Select
End Sub
処理内容:選択範囲内(C1が左上端セル)の2列目(D列)を選択します。
Sub Selected_Select2()
Worksheets("Sheet1").Select
Range("C1").CurrentRegion.Columns(2).Select
End Sub
処理内容:選択範囲内の変数で指定した列を選択します。
Sub Selected_Select3()
Dim Retsu As Integer
Worksheets("Sheet1").Select
Retsu = 2
Range(Range("A1").CurrentRegion.Columns(Retsu).Address).Select
End Sub
処理内容:選択範囲内(A1が左上端セル)の左端列を選択します。
Sub Selected_Select4()
Worksheets("Sheet1").Select
Range("A1").CurrentRegion.Columns(1).Select
End Sub
処理内容:選択範囲内(A1が左上端セル)の右端列を選択します。
Sub Selected_Select5()
Worksheets("Sheet1").Select
Range("A1").CurrentRegion.Select
Selection.Columns(Selection.Columns.Count).Select
End Sub
処理内容:選択範囲内(A1が左上端セル)の3行目を選択します。
Sub Selected_Select6()
Worksheets("Sheet1").Select
Range("A1").CurrentRegion.Rows(3).Select
End Sub
処理内容:選択範囲内(C3が左上端セル)の3行目(シートの5行目になる)を選択します。
Sub Selected_Select7()
Worksheets("Sheet1").Select
Range("C3").CurrentRegion.Rows(3).Select
End Sub
処理内容:選択範囲内の変数で指定した列を選択します。
Sub Selected_Select8()
Dim Gyou As Integer
Worksheets("Sheet1").Select
Gyou = 2
Range(Range("A1").CurrentRegion.Rows(Gyou).Address).Select
End Sub
処理内容:選択範囲内(A1が左上端セル)の上端行を選択します。
Sub Selected_Select9()
Worksheets("Sheet1").Select
Range("A1").CurrentRegion.Rows(1).Select
End Sub
処理内容:選択範囲内(A1が左上端セル)の下端行を選択します。
Sub Selected_Select10()
Worksheets("Sheet1").Select
Range("A1").CurrentRegion.Select
Selection.Rows(Selection.Rows.Count).Select
End Sub
処理内容:選択範囲内(C3:E8)のB2(結果は"D4"を選択)を選択します。
Sub Selected_Select11()
Worksheets("Sheet1").Select
Range("C3:E8").Range("B2").Select
End Sub
処理内容:選択範囲内(C3が左上端セル)のB2(結果は"D4"を選択)を選択します。
Sub Selected_Select12()
Worksheets("Sheet1").Select
Range("C3").CurrentRegion.Range("B2").Select
End Sub


リスト範囲の終端セルを選択
処理内容:セルD5の列の上端を選択します。
Sub TopLast_Select1()
Worksheets("Sheet1").Select
Range("D5").End(xlUp).Select
End Sub
処理内容:セルD5の列の下端を選択します。
Sub TopLast_Select2()
Worksheets("Sheet1").Select
Range("D5").End(xlDown).Select
End Sub
処理内容:セルD5の行の左端を選択します。
Sub TopLast_Select3()
Worksheets("Sheet1").Select
Range("D5").End(xlToLeft).Select
End Sub
処理内容:セルD5の行の右端を選択します。
Sub TopLast_Select4()
Worksheets("Sheet1").Select
Range("D5").End(xlToRight).Select
End Sub
処理内容:リスト範囲の右下端を選択します。(使用されたセル範囲の右下端セルを選択)
Sub TopLast_Select5()
Worksheets("Sheet1").Select
Range("A1").SpecialCells(xlLastCell).Select
End Sub
処理内容:リスト1列目最終行を選択します。
Sub TopLast_Select1()
Worksheets("Sheet1").Select
Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Select
End Sub
処理内容:リスト1行目最終列を選択します。
Sub TopLast_Select2()
Worksheets("Sheet1").Select
Cells(1,ActiveSheet.Columns.Count).End(xlToLeft).Select
End Sub


選択範囲の移動
選択されているセルを上下(行間)または左右(列間)に移動するときは「基準セル.Offset(移動行数,移動列数)」で指定します。
上下に移動するときは、移動行数がプラスの数値のときは下へ、マイナスの数値のときは上へ移動します。 左右に移動するときは、移動列数がプラスの数値のときは右へ、マイナスの数値のときは左へ移動します。 移動行数、移動列数が 0 (ゼロ)のときは移動しません。
また、上下方向にだけ移動するときは、「Offset(移動行数)」のように移動列数を省略することができますが、左右方向にだけ移動するときは「Offset
, (移動列数)」のように上下方向の移動行数に代えて「, (カンマ)」を入力してから移動列数を指定します。
上下・左右両方移動するときは、「Offset(移動行数,移動列数)」のように移動行数と移動列数の間に「,
(カンマ)」を入力します。
なお、複数セル範囲の移動を行うときは、Select
メソッドにより範囲を選択します。
処理内容:選択セルの行位置を下へ1行移動します。
Sub cells_offset1()
Range("A1").Select
Selection.Offset(1,0).Select
End Sub
処理内容:選択セルの行位置を下へ1行移動します(省略形)。
Sub cells_offset2()
Range("A1").Select
Selection.Offset(1).Select
End Sub
処理内容:アクティブセルの行位置を下へ1行移動します(省略形)。
Sub cells_offset3()
Range("A1").Activate
Activecell.Offset(1).Activate
End Sub
処理内容:選択セルの行位置を上へ1行移動します(省略形)。
Sub cells_offset4()
Range("A5").Select
Selection.Offset(-1).Select
End Sub
処理内容:選択セルの列位置を右へ1列移動します。
Sub cells_offset5()
Range("A1").Select
Selection.Offset(0,1).Select
End Sub
処理内容:選択セルの列位置を右へ1列移動します(省略形)。
Sub cells_offset6()
Range("A1").Select
Selection.Offset(,1).Select
End Sub
処理内容:アクティブセルの列位置を右へ1列移動します(省略形)。
Sub cells_offset7()
Range("A1").Activate
Activecell.Offset(,1).Activate
End Sub
処理内容:選択セルの列位置を左へ1列移動します(省略形)。
Sub cells_offset8()
Range("D1").Select
Selection.Offset(,-1).Select
End Sub
処理内容:選択セルの列位置を下へ3行右へ2列移動します。
Sub cells_offset9()
Range("A1").Select
Selection.Offset(3,2).Select
End Sub
処理内容:選択セルの列位置を上へ3行左へ2列移動します。
Sub cells_offset10()
Range("D5").Select
Selection.Offset(-3,-2).Select
End Sub


選択範囲のサイズ変更
選択されている範囲を拡大または縮小するときは、Resize
プロパティーにより、選択する範囲の行数や列数を求めてから変更量を数値で指定してサイズを変更します。
指定例 Resize(Selection.Rows.Count (変更量),
Selection.Columns.Count (変更量),)
Selection.Rows.Count ・・・・・ 基準セルの行数。+ 3
・・・・変更量
Selection.Columns.Count ・・・・ 基準セルの列数。 - 2
・・・・変更量
行の変更量は、プラスのとき下に拡大、マイナスのとき上に縮小します。列の変更量は、プラスのとき右に拡大、マイナスのとき左に縮小します。
行数だけを変更するときは、Resize(Selection.Rows.Count +3).Select
列数だけを変更するときは、Resize(, Selection.Columns.Count +2).Select
行数だけの変更の場合は、列数の変更量を省略できますが、列数の変更の場合は、行数の変更量の指定に代えて「,
(カンマ)」を入力します。
処理内容:選択範囲の行範囲を2行分拡げます。
Sub cells_Resize1()
Range("A1").CurrentRegion.Select
Selection.Resize(Selection.Rows.Count + 2).Select
End Sub
処理内容:選択範囲の行範囲を1行分狭めます。
Sub cells_Resize2()
Range("A1").CurrentRegion.Select
Selection.Resize(Selection.Rows.Count - 1).Select
End Sub
処理内容:選択範囲の列範囲を2列分拡げます。
Sub cells_Resize3()
Range("A1").CurrentRegion.Select
Selection.Resize(, Selection.Columns.Count + 2).Select
End Sub
処理内容:選択範囲の列範囲を1列分狭めます。
Sub cells_Resize4()
Range("A1").CurrentRegion.Select
Selection.Resize(, Selection.Columns.Count - 1).Select
End Sub
処理内容:選択範囲の行範囲を2行、列範囲を3列分拡げます。
Sub cells_Resize5()
Range("A1").CurrentRegion.Select
Selection.Resize(Selection.Rows.Count + 2, Selection.Columns.Count + 3).Select
End Sub
処理内容:選択範囲の行範囲を2行、列範囲を3列分狭めます。
Sub cells_Resize6()
Range("A1").CurrentRegion.Select
Selection.Resize(Selection.Rows.Count - 2, Selection.Columns.Count - 3).Select
End Sub


選択範囲の移動とサイズ変更の同時実行
処理内容:選択範囲の行範囲を1行下に移動して、行範囲を1行分狭めます。
Sub cells_Resize7()
Range("A1").CurrentRegion.Select
Selection.Offset(1).Resize(Selection.Rows.Count - 1).Select
End Sub
処理内容:選択範囲の行範囲を1列右に移動して、列範囲を1列分狭めます。
Sub cells_Resize8()
Range("A1").CurrentRegion.Select
Selection.Offset(, 1).Resize(, Selection.Columns.Count - 1).Select
End Sub
処理内容:選択範囲を1行下、1列右に移動して、行範囲を1行分、列範囲を1列分狭めます。
Sub cells_Resize9()
Range("A1").CurrentRegion.Select
Selection.Offset(1, 1).Resize(Selection.Rows.Count - 1, Selection.Columns.Count - 1).Select
End Sub


特定のセルのみ選択(ジャンプ)
Excel メニューの「編集(E)」「ジャンプ(G)」を選択し、「ジャンプ」ダイアログボックスの「セル選択(S)」ボタンをクリックすると、「選択オプション」ダイアログボックスが表示されます。
選択項目のオプションボタンをクリックすると、該当するセルだけを選択することができます。
特定のセルだけを選択するには、「検索範囲.SpecialCells(引数).Select」で指定します。
例1:ワークシート「Sheet1」の全セルで、計算式が入力されているセルだけを選択する。
Sub Test1()
Worksheets("Sheet1").Select
Cells.SpecialCells(xlCellTypeFormulas).Select
End Sub
例2:ワークシート「Sheet1」のリスト範囲右下隅のセルを選択する。
Sub Test2()
Worksheets("Sheet1").Select
Range("A1").CurrentRegion.SpecialCells(xlCellTypeLastCell).Select
End Sub
式の意味は、
Cells ・・・ 検索範囲、SpecialCells(引数) ・・・
選択セルの内容、Select ・・・ 選択実行命令
SpecialCells の( )内の引数を変更することにより、色々な内容の選択ができます。
選択するセル
|
SpecialCells の引数
|
表示形式が設定されているセル |
xlCellTypeAllFormatConditions |
同じ表示形式が設定されているセル |
xlCellTypeSameFormatConditions |
条件付書式が含まれているセル |
xlCellTypeAllValidation |
同じ条件の設定が含まれているセル |
xlCellTypeSameValidation |
空の文字列のセル(空白セル) |
xlCellTypeBlanks |
コメントが含まれているセル |
xlCellTypeComments |
定数が含まれているセル |
xlCellTypeConstants |
定数(エラー値)が含まれているセル |
xlCellTypeConstants,xlErrors |
定数(論理値)が含まれているセル |
xlCellTypeConstants,xlLogical |
定数(数字)が含まれているセル |
xlCellTypeConstants,xlNumbers |
定数(文字列)が含まれているセル |
xlCellTypeConstants,xlTextValues |
数式が含まれているセル |
xlCellTypeFormulas |
使われたセル範囲内の最後のセル |
xlCellTypeLastCell |
すべての可視セル |
xlCellTypeVisible |
A列のうち、セル A4 とは内容が異なるセル |
Worksheets("TEST").Activate
Set R1 = ActiveSheet.Columns("A"). _
ColumnDifferences _
(Comparison:=ActiveSheet.Range("A4"))
R1.Select |


セル範囲に名前を付ける(名前の定義)
セル範囲に名前を付ると、範囲選択や計算式で使用する範囲指定に利用することができます。
処理内容:シート「Sheet1」の「E11:E13」に「範囲名」という名前を付けて登録します。
Sub Cells_Name1()
ActiveWorkbook.Names.Add Name:="範囲名",RefersToR1C1:="=Sheet1!R11C5: R13C5 "
End Sub
処理内容:シート「Sheet1」の可変リスト範囲に「ListArea」という名前を付けて登録します。
Sub Cells_Name2()
Range("A1").CurrentRegion.Name="ListArea"
End Sub
処理内容:シート「Sheet1」のA列の可変データ範囲に「A列範囲」という名前を付けて登録します。
Sub Cells_Name3()
Retsu= Range("A1").CurrentRegion.Columns(1).Address(ReferenceStyle:=xlR1C1)
ActiveWorkbook.Names.Add Name:="A列範囲",RefersToR1C1:="=Sheet1!" &Retsu
End Sub
処理内容:「ListArea」という名前定義を参照します。
Sub Cells_Name4()
Range("ListArea").Select
End Sub
処理内容:「ListArea」という名前定義を削除します。
Sub Cells_Name5()
ActiveWorkbook.Names("ListArea").Delete
End Sub
処理内容:名前(名前定義)を一括削除します。
Sub Cells_Name6()
Dim MyName As Name
For Each MyName In ActiveWorkbook.Names
MyName.Delete
Next
End Sub

